package main

import "fmt"

func main() {
	// // 创建channel
	// ch := make(chan int, 3)
	// // 给管道里面存储数据
	// ch <- 10
	// ch <- 21
	// ch <- 32
	// // 获取管道里面的内容
	// a := <-ch  //10
	// fmt.Println(a)
	// <-ch  //从管道里面取值 //21
	// c :=<-ch  //32
	// fmt.Println(c)   //32
	// // 给管道里面存储数据
	// ch <-56
	// ch <-66
	// // 
	// fmt.Printf("%v 容量:%v 长度%v",ch,cap(ch),len(ch))
	// 管道的类型
	// ch1 :=make(chan int,4)
	// ch1 <- 34
	// ch1 <- 54
	// ch1 <- 64
	// ch2 :=ch1 
	// ch2 <- 25

	// <-ch1  //34
	// <-ch1  //54
	// <-ch1   //64
	// d:=<-ch1  //25
	// fmt.Println(d)  //69
	// // 管道阻塞
	// ch3 :=make(chan int,1)
	// ch3 <-64
	// ch3 <-35  //管道阻塞

	// 在没有使用协程的情况下,如果我们的管道数据已经全部取出,再取就会报告deadlock
	// ch4 :=make(chan string,2)
	// ch4 <-"数据1"
	// ch4 <-"数据2" 
	// m1 := <-ch4
	// m2 := <-ch4
	// m3 := <-ch4  //没有值在取会组测
	// fmt.Println(m1,m2,m3)


	// 正确写法
	ch5 :=make(chan int,2)
	ch5 <- 34
	<-ch5
	ch5 <- 64
	<-ch5
	ch5 <- 78
	m4 := <-ch5
	fmt.Println(m4)


}